Skip to content

Refactor (packages/web/src/i18n/locales.ts): Function with many returns - #51

Closed
Marnilla-Metwaly wants to merge 2 commits into
CMU-17313Q:mainfrom
Marnilla-Metwaly:refactor-match-locale
Closed

Refactor (packages/web/src/i18n/locales.ts): Function with many returns#51
Marnilla-Metwaly wants to merge 2 commits into
CMU-17313Q:mainfrom
Marnilla-Metwaly:refactor-match-locale

Conversation

@Marnilla-Metwaly

@Marnilla-Metwaly Marnilla-Metwaly commented Sep 3, 2026

Copy link
Copy Markdown

P1B: Starter Task: Refactoring PR

1. Issue

Link to the associated GitHub issue:
#50

Full path to the refactored file:
packages/web/src/i18n/locales.ts

What do you think this file does?
I think this file contains the languages supported by the website and helps match a locale input, such as a browser language, to one of the supported languages.

What is the scope of your refactoring within that file?
I refactored the matchLocale() function to reduce its number of return statements. I also added tests for this function in packages/web/test/locales.test.ts.

Which Qlty‑reported issue did you address?
I addressed the “Function with many returns” issue in matchLocale() at line 98. Before the refactoring, Qlty reported a count of 7 returns.

2. Refactoring

How did the specific issue you chose impact the codebase’s maintainability?
Having many return statements made the function’s control flow harder to follow. It could also make adding or changing locale rules more difficult.

What changes did you make to resolve the issue?
I created a match variable to store the selected locale and changed the conditions to an if/else if structure. The result is returned at the end, while one early return remains for invalid input.

How do your changes improve maintainability? Did you consider alternatives?
The new structure makes it easier to see how the result is selected and returned. I considered creating separate helper functions, but I thought that would add unnecessary complexity for this small function.

3. Validation

How did you validate that the change is correct?
I added three tests with 10 expectations covering exact and prefixed locales, Chinese variants, Portuguese, Norwegian, invalid input, and unsupported input. All tests passed, and linting reported 0 warnings and 0 errors for the changed files.
Screenshot 2026-09-03 202120

Attach a screenshot of the test coverage showing the lines were executed by the tests.
Screenshot 2026-09-03 212236

Attach a screenshot showing the tests that cover the change passing during CI
Screenshot 2026-09-03 213709

Attach a screenshot of qlty smells --no-snippets <full/path/to/file.ts> showing fewer reported issues after the changes.
Screenshot 2026-09-03 194947
Screenshot 2026-09-03 201510

@Marnilla-Metwaly Marnilla-Metwaly changed the title Refactor match locale Refactor (packages/web/src/i18n/locales.ts): Function with many returns Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant